# coding:utf-8
import re

from app.libs.rules import rules
from app.libs.tools import SplitSentences, merge_sub_sentence


class ParseArticle:

    def __init__(self, article):
        self.article = article
        self.abstract_sign = 0
        self.paragraphs = article.split('\n')
        self.sign = len(article.split('\n'))
        self.category_position = len(article.split('\n'))
        self.ckwx_sign = ['[M]', '[N]', '[J]', '[P]', '[Z]', '[G]', '[O]', '[S]', '[D]', '[R]', '[K]', '[W]', '[B]',
                          '[A]', '[Q]', '[L]', '[V]', '[C]', '[T]', '[I]', '[Y]', '[H]', '[E]']
        self.has_category = 0
        self.char_index = 0
        self.ckwx_position = len(article.split('\n'))
        self.contents = []
        self.paragraph_content = []
        self.current_paragraph_index = 0
        self.insertList = []
        self.current_check_content = ''
        self.current_check_index = ''

    def appendInsertList(self, paragraph, check):
        self.insertList.append({
            'content': paragraph,
            'check_content': self.current_check_content,
            'paragraph_index': self.current_paragraph_index,
            'check': check
        })
        for item in self.insertList:
            item['check_content'] = self.current_check_content
        self.current_paragraph_index += 1

    def insert(self):
        for item in self.insertList:
            final = item.copy()
            if len(final['check_content']) < 10:
                final['check'] = 0
            self.contents.append(final)
        self.insertList = []
        self.current_check_content = ''
        return 'continue'

    @staticmethod
    def count_english_words(paragraph):
        words = re.findall(r'\b[a-zA-Z]+\b', paragraph)
        return len(words)

    @staticmethod
    def countLanguage(paragraphs):
        count = 0
        zh = ''
        english_words = 0
        for s in paragraphs:
            if '\u4e00' <= s <= '\u9fa5':
                count += 1
                zh += s
        if count == 0:
            english_words = ParseArticle.count_english_words(paragraphs)
        return count, zh, english_words

    @staticmethod
    def is_pure_english(sentence):
        return all(char.isalpha() or char.isspace() for char in sentence)

    @staticmethod
    def matchCategoryIndex(content):
        pattern1 = '((\(|（){1}(一|二|三|四|五|六|七|八|九|\d{1,2})(\)|）){1})|((一|二|三|四|五|六|七|八|九|\d{1,2})(.|。|,| ){1})'
        pattern2 = '(([(（]){1}(一|二|三|四|五|六|七|八|九|\d{1,2})([)）]){1})|((一|二|三|四|五|六|七|八|九|\d{1,2})(.|。|,| ){1})'
        print(re.match(pattern1, content))
        print(re.match(pattern2, content))
        return re.match(pattern1, content) or re.match(pattern2, content)

    @staticmethod
    def isAbstract(content):
        if content[0:2] == '摘要':
            return True

        if content[0:4] == '中文摘要':
            return True
        if content[0:4] == '【摘要】':
            return True
        if content[0:4] == '[摘要]':
            return True
        return False

    @staticmethod
    def check_doc_str(text):
        list = ['[M]', '[N]', '[J]', '[P]', '[Z]', '[G]', '[O]', '[S]', '[D]', '[R]', '[K]', '[W]', '[B]',
                '[A]', '[Q]', '[L]', '[V]', '[C]', '[T]', '[I]', '[Y]', '[H]', '[E]']
        for i in list:
            if str(i) in text:
                return True
        return False

    def getAbstractIndex(self):
        paragraphs = self.article.split('\n')
        for index, paragraph in enumerate(paragraphs):
            zh_count, zh_content, english_words = ParseArticle.countLanguage(paragraph)
            if not ParseArticle.is_pure_english(paragraph):
                paragraph = paragraph.replace(' ', '')
            if ParseArticle.isAbstract(zh_content):
                self.abstract_sign = index

    def parseIsCategoryHeader(self, index, paragraph):
        zh_count, zh_content, english_words = ParseArticle.countLanguage(paragraph)
        paragraph_length = len(paragraph.strip())
        if zh_content == '目录' and paragraph_length < 140:
            if self.has_category == 0:
                self.category_position = self.char_index
            self.has_category = 1
            self.current_check_content = paragraph
            self.current_check_index = index
            self.appendInsertList(paragraph, 0)
            return self.insert()

    def parseIsCategory(self, index, paragraph):
        zh_count, zh_content, english_words = ParseArticle.countLanguage(paragraph)
        if self.char_index - self.category_position <= 80 and ParseArticle.matchCategoryIndex(paragraph) and len(
                zh_content) < 35 and len(paragraph) < 140:
            self.category_position = self.char_index
            self.current_check_content = paragraph
            self.current_check_index = index
            self.appendInsertList(paragraph, 0)
            return self.insert()
        # if ParseArticle.matchCategoryIndex(paragraph) and len(zh_content) < 18 and len(paragraph) < 40:
        #     self.category_position = self.char_index
        #     self.current_check_content = paragraph
        #     self.current_check_index = index
        #     self.appendInsertList(paragraph, 0)
        #     return self.insert()

    def uncheckAbstract(self, index, paragraph):
        if index == self.abstract_sign and index != 0:
            self.current_check_content = paragraph
            self.current_check_index = index
            self.appendInsertList(paragraph, 0)
            return self.insert()

    def uncheckBeforeAbstract(self, index, paragraph):
        zh_count, zh_content, english_words = self.countLanguage(paragraph)
        if index < self.abstract_sign and zh_count < 140:
            self.current_check_content = paragraph
            self.current_check_index = index
            self.appendInsertList(paragraph, 0)
            return self.insert()

    def isCkwxHeader(self, index, paragraph):
        zh_count, zh_content, english_words = self.countLanguage(paragraph)
        if zh_content == '参考文献' and len(paragraph) < 140:
            self.ckwx_position = index
            self.current_check_content = paragraph
            self.current_check_index = index
            self.appendInsertList(paragraph, 0)
            return self.insert()

    def uncheckBeforeCkwx(self, index, paragraph):
        zh_count, zh_content, english_words = self.countLanguage(paragraph)
        if index > self.ckwx_position:
            if ParseArticle.check_doc_str(paragraph) or re.search('([\[|【|［]\d{1,3}[】|\]|］])', paragraph.strip()[0:4]):
                if zh_count < 140:
                    self.current_check_content = paragraph
                    self.current_check_index = index
                    self.appendInsertList(paragraph, 0)
                    return self.insert()

    def checkByRules(self, index, paragraph):
        paragraph = paragraph.strip()
        zh_count, zh_content, english_words = self.countLanguage(paragraph)
        for rule in rules:
            if rule['type'] == 'in':
                if rule['keywords'] in zh_content:
                    if rule['min_type'] == 'zh':
                        if zh_count < rule['min_length']:
                            self.current_check_content = paragraph
                            self.current_check_index = index
                            self.appendInsertList(paragraph, 0)
                            return self.insert()
                    if rule['min_type'] == 'all':
                        if len(paragraph) < rule['min_length']:
                            self.current_check_content = paragraph
                            self.current_check_index = index
                            self.appendInsertList(paragraph, 0)
                            return self.insert()
            if rule['type'] == 'equal':
                if rule['keywords'] == zh_content:
                    if rule['min_type'] == 'zh':
                        if zh_count < rule['min_length']:
                            self.current_check_content = paragraph
                            self.current_check_index = index
                            self.appendInsertList(paragraph, 0)
                            return self.insert()
                    if rule['min_type'] == 'all':
                        if len(paragraph) < rule['min_length']:
                            self.current_check_content = paragraph
                            self.current_check_index = index
                            self.appendInsertList(paragraph, 0)
                            return self.insert()
        if zh_count > 0 or english_words == 0:
            if len(paragraph) <= 18:
                if len(self.current_check_content + paragraph) > 20:
                    if index - self.current_check_index == 1:
                        self.current_check_content += paragraph
                        self.current_check_index = index
                        self.appendInsertList(paragraph, 1)
                        self.insert()
                    else:
                        if self.insertList != []:
                            self.insert()
                        self.current_check_content += paragraph
                        self.current_check_index = index
                        self.appendInsertList(paragraph, 1)
                        self.insert()
                else:
                    self.current_check_content += paragraph
                    self.current_check_index = index
                    self.appendInsertList(paragraph, 1)
            elif len(paragraph.strip()) > 18 and len(paragraph.strip()) <= 55 and len(paragraph) > 0:
                self.current_check_content += paragraph
                self.current_check_index = index
                self.appendInsertList(paragraph, 1)
                return self.insert()
            else:
                if self.insertList != []:
                    self.insert()
                paragraph = paragraph.strip()
                sentence_list = SplitSentences('([。！])', paragraph)
                for sentence_list_item in sentence_list:
                    if len(sentence_list_item) > 55:
                        sub_sentences_list = SplitSentences('([,，])', sentence_list_item)
                        paragraph_sentence_list = merge_sub_sentence(sub_sentences_list)
                        for paragraph_sentence_list_item in paragraph_sentence_list:
                            self.contents.append(
                                {
                                    'content': paragraph_sentence_list_item,
                                    'check_content': paragraph_sentence_list_item,
                                    'paragraph_index': self.current_paragraph_index,
                                    'check': 1
                                }
                            )
                    else:
                        if len(sentence_list_item) > 0:
                            self.contents.append(
                                {
                                    'content': sentence_list_item,
                                    'check_content': sentence_list_item,
                                    'paragraph_index': self.current_paragraph_index,
                                    'check': 1
                                }
                            )
                self.current_paragraph_index += 1
                return 'continue'
        else:
            if english_words < 5:
                self.current_check_content = paragraph
                self.current_check_index = index
                self.appendInsertList(paragraph, 0)
                return self.insert()
            if english_words >= 5 and english_words <= 15:
                self.current_check_content = paragraph
                self.current_check_index = index
                self.appendInsertList(paragraph, 0)
                return self.insert()
            if english_words > 15:
                paragraph = paragraph.strip()
                sentence_list = SplitSentences('([.,])', paragraph)
                for english_sentence in sentence_list:
                    item_zh_count, item_zh_content, item_english_words = self.countLanguage(english_sentence)
                    if item_english_words > 4:
                        self.contents.append(
                            {
                                'content': english_sentence,
                                'check_content': english_sentence,
                                'paragraph_index': self.current_paragraph_index,
                                'check': 1
                            }
                        )
                    else:
                        self.contents.append(
                            {
                                'content': english_sentence,
                                'check_content': english_sentence,
                                'paragraph_index': self.current_paragraph_index,
                                'check': 0
                            }
                        )
            self.current_paragraph_index += 1

    def cut(self):
        self.getAbstractIndex()
        paragraph_content = []
        for index, paragraph in enumerate(self.paragraphs):
            paragraph_length = len(paragraph.strip())
            if paragraph_length > 0:
                paragraph = paragraph.replace('【', '[').replace('】', ']').replace('［', '').replace('］', '')
                self.char_index += paragraph_length
                self.paragraph_content.append(paragraph)
                if self.uncheckAbstract(index, paragraph) == 'continue':
                    continue
                if self.parseIsCategoryHeader(index, paragraph) == 'continue':
                    continue
                if self.parseIsCategory(index, paragraph) == 'continue':
                    continue
                if self.uncheckBeforeAbstract(index, paragraph) == 'continue':
                    continue
                if self.isCkwxHeader(index, paragraph) == 'continue':
                    continue
                if self.uncheckBeforeCkwx(index, paragraph) == 'continue':
                    continue
                if self.checkByRules(index, paragraph) == 'continue':
                    continue


if __name__ == '__main__':
    article = '''
毕 业 论 文（设 计）
设计题目：码垛机输送系统设计
姓    名                     
学    号                  
专    业           
班    级 
指导教师                   
学    部          
答辩日期     
码垛机输送系统设计
摘  要 
自动包装码垛机的输送线是其整个包装生产线的重要组成部分，它大大减少了生产线的人力物力投入，提高了生产效率。
带式输送机是通过传送带的运动来输送材料的连续输送装置，起到牵引和搬运构件的作用。起传送作用的皮带绕过输送机前后的两个传动滚筒，形成一个环线。传动带下面有大量托辊支撑，以保证它在运输过程中不会因物料重量以及自重而过度下垂。输送机通过摩擦带动皮带，其中拉紧装置就是为了拉紧皮带以提供传送带正常工作所需要的摩擦。在生产中，两滚筒中提供动力的主动滚筒转动，从而通过摩擦带动传送带前进，被运输的物料放在传送带上，随其一起运动，达到运输物料的目的。
对传动机构的运动进行分析与计算。由于空间的结构限制，在设计过程中既要考虑结构的合理性和零件的强度，又要考虑外观的美观和加工的难度。而且此机构还有配套设计的电机稳速控制集成电路，通过外部集成电路的控制，来实现电机的稳速运转，使其运转速度控制在一定范围内，以此保证物料运输的安全及稳定。
带式输送机是自动包装码垛机中的一种机械传动装置,与其它常用的传动装置相比,它可以输送多种类的物料，还可以在较复杂地形使用，输送能力较强。同时它零件少拆装方便,调试简单,可靠性高，安全性高，费用低，相较于其它运输装置它的精度高，传输稳定，工作噪音小，是一种典型的带传动。
关键词：码垛机；带式输送机；传动
Design of conveying system for palletizer
Abstract
The conveying line of automatic packing palletizer is an important part of its whole packing line, which greatly reduces the manpower and material resources input in the production line and improves the production efficiency.
Two way belt conveyor is composed of three basically the same structure of the extension. Each extension is equipped with a positive baffle to guide the material, so as to ensure the material can be transported stably on the conveyor belt and its correct position. A steering wheel is installed on each extension to realize the transfer and steering of materials.
The motion of the drag mechanism is analyzed and calculated. Due to the limitation of space structure, the rationality of structure and the strength of parts should be considered in the design process, as well as the beauty of appearance and the difficulty of processing. Moreover, this mechanism also has a motor stable speed control integrated circuit, which can realize the steady speed of the motor and control its speed within a certain range through the control of external integrated circuit, so as to ensure the safety and stability of material transportation.
Bidirectional belt conveyor is in automatic packaging stacking machine, a mechanical transmission device, compared with other commonly used transmission device, it can be a two-way operation, can realize to material, and it also has a simple structure, convenient disassembling, easy debugging and so on advantages, at the same time compared with other transportation device of its high precision, stable transmission, small noise, is a kind of typical belt transmission.
Keywords: Palletizer；Two-way belt conveyor；Guide is baffle
码垛机输送系统设计
第1章  绪论
1.1  课题现状
课题来源于生产实践。目前我国的化工企业的生产中，产品的包装和码垛机工序的生产自动化水平还很低，不能适应生产力水平发展的需要，为此一些大的化工企业开始引进国外的包装码垛机生产线，从而可以节省大量的人力、物力、财力在生产线中的投入，提高生产效率。但任何事情往往总是有利也有弊的，这些引进的产品一方面造价高，需大量资金，造成资金外流严重；另一方面，由于生产中有些参数随着原料、工艺的变化而变化，因此需要随时对生产线做少量的改动，而进口的生产线去做这些改动很不方便，有事还得请外国专家帮助，费钱费时，这就要求包装码垛机生产线尽快实现国产化。
自动包装码垛机生产线是集机械、电控、计算机等为一体的高科技产品，它包含液压技术、可编程控制器应用技术、检测技术、单片机应用技术、自动控制技术等。智能技术的加入，使它的功能更进一步的增强，由以前单纯的输送，发展至现在转向、数控等多功能于一体。
1.2  课题研究的目的及意义
针对自动包装码垛机生产线现状及特点，我们提出了这个课题。
毕业设计的资料主要由哈尔滨七星自动化成套设备工程有限责任公司提供的，设计的主要内容是对原有的机械主传动部分加以改进和完善，使之符合基本工作要求，同时又便于主要参数的调整，使之趋向多功能。
通过本次设计，使设计者达到了对仪器设计能初步独立完成的能力，培养了设计者独立思考、联系实际、把以前所学的知识融进设计中的能力，并在设计过程中采用计算机辅助设计，从而也熟练掌握了机械CAD的使用。
1.3  输送机的基本工作原理
带式输送机主要有动力系统、传动部件、转向装置、张紧装置、支撑机构等组成，见图1-1。其各机构作用概括如下：
动力系统：动力由带式输送机外置的电动机提供，通过皮带与电动机的皮带轮连在一起产生，经由调速装置调节后提供给传送带，运送速率是可控的。
传动部件：滚筒、托辊和传送带组成了最基本的传动链来输送物料。
转向装置：导正挡板是本机构的主要导向装置，它控制着物料的传送方向。
锁紧装置：径向、轴向是锁紧装置常见的两种受力方式，本次毕业设计采用的是前一种。
张紧装置：张紧托架和张紧滚筒是本次设计中主要的张紧装置，通过对它们的调试，可以使传送带松紧适度，不会跑偏。
支撑机构：左右侧梁、托辊架、左右支架、滚筒支架、支撑板、支撑杆等构成了带式输送机的支撑装置，不同的支撑件起到了对整机和各部件的支撑作用。
1.传动滚筒 2.托辊 3.皮带 4.尾部滚筒 5.改向滚筒
图1-1 传动工作原理图
第2章  码垛机器人
2.1  码垛机器人结构
WSM系列码垛机器人具有标准化的结构。在自动化生产中，常用这一系列机器人来进行物料的装卸。WSM系列码垛机器用的托盘也已标准化，有300×400 mm、400×600 mm和600×800 mm三种规格，每个机器人负责2~3摞的托盘，托盘的多少可以根据工作量自行增减。这一系列的机器人采用的结构被称为挂壁式结构，两根上下排布的龙门式导轨组成了它的X轴了，它Y轴完成工作需要走多长它的X轴就要设计多长。X轴有时固定在机器人支柱上，有时固定在墙上。它的Y轴由两根龙门式导轨并排组成，它的跨度大约在100~500mm，Y轴是要安装在X轴上的。Y轴上安装一个气动式手抓。如图1所示，这个手抓通过打开和收紧来抓取一个托盘，然后经由X,Y轴的运动，来转移物料。通常标准码垛机会配备一台二维（X轴和Z轴机器人）或一台三维机器人，这台二维或三维的机器人主要完成物件抓取后的移动工作。图2是普通二维和三维机器人的结构示意图。
图2-1 码垛机器人工作原理示意图
图2-2 与码垛机器人配套的使用的二维机器人和三维机器人
2.2  常用的二维和三维机器人
表2-1 技术规格
以上为标准码垛机器人的数据，托盘的话是能够根据你的实际生产要求来定制的，无论尺寸还是形状，都能满足你的生产要求。生产中，生产者可以先用输送带或者手推车把装有物料的托盘摞在码垛机器人的工作范围内，然后机器人便会按照你的设定抓取移动托盘。机器人在X 轴以及Y轴的运动范围都是可以设定的，手抓的抓取力度同样可以改变，灵活性极大，足以满足大部分的生产需求。
2.3  工作原理 
在符合托盘要求的平板上放置一层工件，平板和工件向前移动，直到托盘垂直于平面。上挡板杆下降，另外三个定位挡板杆启动并夹紧，这时板复位。每个工件下降到距板材底面10mm的托盘平面上，托盘下降一个工件高度。重复以上步骤，直到堆叠符合设定的要求。
在图2-1中，生产者可以先用输送带或者手推车把装有物料的托盘摞在码垛机器人的工作范围内，也就是图2-1中A摞的位置。A摞中的托盘里放着待加工的物件，通过系统设定，机器人的X轴与Y轴的导轨开始运作，使手抓准确移动到A摞托盘的位置，然后手抓收紧，夹住A摞托盘里最上面的一个，并将托盘水平抬起，这个抬起高度是能够根据实际情况来设定的。这时，另外的一组XZ轴机器人加入工作，这组机器人的主要工作就是抓取XY轴机器人已经抓取起来的托盘里的物料，经由自己的导轨运作，把物料输送到另一个工作平台，在另一个平台完成对物料的加工。之后，再把加工好的物料放回XY轴机器人抓取着的托盘里。如此往复，直到托盘里的物料被加工完。然后，XY轴机器人开始沿X运动，待托盘运动到B摞的上方，Y轴开始下降，降至托盘稳定摞在B摞上方，手抓松开，沿原路线返回A摞上方，再去抓取另一个托盘，至此一组工作完成。从手抓到达A摞上方，抓取托盘，再移动到XZ轴机器人可以抓取工件的位置，这整个过程不会超过10秒。在这个过程中，XY轴的移动速度可以在允许范围内自主设定，以加快生产，提高效率。于此同时，如果将X轴于输送带输送方向设置为相同的，那这样就能够形成流水线生产，大大提高效率。对于 XY轴机器人和XZ轴机器人的配合中，XZ轴机器人的抓取位置是固定的，在XZ 轴机器人重复抓取的过程中，XY轴机器人需要配合其工作，在小范围内规律移动托盘，以使XZ轴机器人的手抓每次都可成功抓取工件，直到托盘里的工件全部加工完成。
2.4  结论
WSM系列码垛机器人结构设计合理，维修、拆装方便，成本低。所以，我选择用它来配合本套输送系统的工作。
第3章  输送机的设计
3.1  传动方式的选择
输送机是通过摩擦力来传递运动和转矩的，摩擦轮传动和带传动都符合这个要求。摩擦轮传动和带传动的工作原理及特点如下：
1.摩擦轮
（1）摩擦轮传动原理及特点
摩擦轮传动是两个相互压紧的滚轮,通过接触面间的摩擦力传递运动和动力的。由于其结构简单、制造方便、运行平稳、噪音低、过载能打滑(可防止设备中重要部件的损坏)。它的传动比调节是连续的，因此具有较大的应用范围，成为无级变速传动的主要部件。然而,由于其运转过程中会产生弹性滑动,几何滑动和打滑，从而导致从动轮的旋转精度受到影响,同时其传输效率较低,结构尺寸大,轴和轴承荷载作用力很大,所以它主要是用于中小功率传动。
（2）摩擦轮传动的类型
确(滑动率小于2%)，且其规格较大，皮带使用时间短，传动效率低。同时，由于摩擦轮传动根据润滑条件的不同可分为两种类型。一种是工作表面没有润滑，其中一轮是组合的，即轮毂为金属，并有非金属材料(如皮革、橡胶、木材、混纺织物等)固定在车轮的轮毂或边缘表面。虽然它具有较高的摩擦因数，但允许接触应力低，传递功率小。另一种是工作表面有润滑，两金属滚轮是经过硬化处理后的。有润滑的摩擦轮传动可分为弹性流体动压润滑状态和混合润滑状态。弹性流体动压润滑状态是指摩擦轮在具有高粘度和压力指数的润滑剂中工作。在高压作用下，接触区产生具有高剪切强度的瞬时润滑膜，使其处于弹性流体润滑状态，从而产生大的牵引力，提高传动装置的承载能力，也称为牵引传动。混合润滑摩擦轮的传动取决于摩擦副材料和润滑剂的摩擦特性。
根据不同的润滑剂条件，摩擦轮驱动可以分为两种类型。其中之一是工作面没有涂抹润滑油，而是轮的一个结合，并有非金属材料(如皮革、橡胶、木材、混纺织物等)固定在车轮的轮毂或边缘表面。虽然摩擦比高，但使其低接触应力和低传递功率成为可能。另一个是硬化后的两个金属轮工作面涂上润滑剂。摩擦轮的润滑脂驱动器可以分为压力下润滑脂的弹性液体动态状态和混合润滑状态润滑油的流体动力学状态属于用高粘度及压力比的润滑剂工作的摩擦轮。接触区域的高压的影响下,接触部分产生具有高剪切强度的瞬时润滑膜，使其处于弹性流体润滑状态，从而产生大的牵引力，提高传动装置的承载能力，也被称为牵引传达增加使驱动器的运输能力。混合润滑剂的摩擦轮的移动取决于摩擦副材料和润滑剂材料的摩擦特性。
2.带传动的工作原理及特点
（1）带传动是利用被张紧在至少两个轮上的皮带作为中间的挠性部件，依靠皮带与轮接触面之间产生的摩擦力来传递运动和动力。根据传动原理的不同，有由皮带与皮带轮之间的摩擦带动的摩擦带传动，也有由皮带与皮带轮齿相互啮合带动的同步带传动。
传动带传动结构简单，传动稳定，成本低，不需要润滑，维护方便，同时传动带有良好的弹性，缓冲振动，适合大距离传动工作。特别是V型传动带没有接头，传递稳定，噪声小，能够在大轴间距离和多轴间传递动力。因此传动带传动在现代机械传动中被广泛应用。
摩擦带传动过载会打滑，但在工作中由于有弹性滑动，所以传动比不精它的工作需要拉紧皮带，使轴受力。同步带传动能保证传动同步，但吸收载荷变化的能力略差，机器运行过快声音会很大。同时，由于皮带传动可能会引起摩擦、火花，所以在易燃易爆的危险场合无法使用。带传动除传送动力外，有时还用于输送物料、整列零件等。
（2）带传动的主要类型与应用
①平型带传动——最简单，适合于中心距a较大的情况；
②V带传动——三角带；
③多楔带传动——适于传递功率较大要求结构紧凑场合；
④同步带传动——啮合传动，高速、高精度，适用于比较精密的仪器，带比较小巧。
两者的不同点在于摩擦轮传动是两轮直接挤在一起，从而传输动力，而带传动是靠中间挠性件——传动带进行传动。在带传动中，除了上述靠摩擦力传动之外，还有一种是依靠带与带轮上轮齿的啮合来传动的，如齿形带传动。由于它同时具备摩擦传动和啮合传动的某些优点，因此应用日趋增多，特别是应用在中、小功率的精密机械中。
综上所述，我决定使用带传动中的平行带传动来作为码垛机输送系统的传动方式。
3.2  带传动工作状态分析
3.2.1  受力分析
如图3-1，3-2示。
3-1 不工作时状态示意图
3-2 工作时状态示意图
带传动是依靠被勒紧在至少两个轮上的皮带作为中间的传递者，通过皮带与轮接触位置之间产生的摩擦力来传递运动和动力。
带的截面形状有扁平长方形、梯形和圆形三种，本次设计采用的是宽平形带，可以运载物料。
为了获得摩擦力，安装时皮带应连接成一个圆环，并使至少一对轮将带抻紧，以获得足够的摩擦力。不工作时，输送带上下两边的受力力相等;工作时，输送带与轮表面之间的摩擦力使一边的受力力增大，称为紧边张力。另一边的受力会减小，称为松边张力。两者之差是带传动的有效拉力(周向力)，它等于任意一个皮带轮沿接触弧的摩擦力之和。在一定条件下，这种摩擦力有最大值。如果工作阻力超过这个最大值，皮带就会在轮表面打滑，传动装置就会罢工。
输送带的材料、输送带的张紧程度、包角的大小、输送带的速度等因素决定了输送带的摩擦极限值。在其他条件相同的情况下，初始张力越大，摩擦极限值越大，因此为了有效的使用传送带，需要适当的控制初始张力，并保持一定的包角。
3.2.2  运动分析
在带传动运动过程中主要会出现弹性滑动和打滑两种失效方式。弹性滑动是发生在带与带轮接触的区域上，是带传动的固有特性，是不可避免的。打滑是带的全面滑动，将引起带的磨损和传动失效，是可以限制的。
由于带是弹性体，在被拉后会产生弹性变形。皮带在传动过程中紧边和松边有受力差。当皮带从紧边向松边移动时，其受力减小，产生的力使皮带弹性收缩，从而导致皮带与皮带轮发生相对滑动。反之，当皮带绕过带轮从松边进入紧边时，其受力增大，皮带因弹性会恢复原状，也会造成皮带与皮带轮之间的相对滑动。这种现象称为弹性滑动。
如图3-2所示，在主动皮带轮上，当皮带绕过主动皮带轮时(图3-2中，小轮为主主动轮，轮速为;大轮为从动轮，轮速为)。输送带的张力逐渐减小，输送带的弹性伸长也随之减小。因此，皮带相对于驱动轮反冲，使得皮带的速度低于驱动轮的圆周速度，即＜。对于从动轮，当皮带经过从动轮时，皮带的拉力增大，皮带的弹性伸长也随之增大。因此，皮带相对于从动轮向前略有伸展，使皮带的速度大于从动轮的圆周速度，即＜，速度间关系: ＞＞。
弹性滑移的大小与有关。当输送带的类型不变时，输送带传递的周向力越大，弹性滑移则越大。当外载荷产生的刚周力大于皮带与小皮带轮接触弧上的总摩擦力时，弹性滑移发展为打滑。显然，打滑是由于过载引起的一种失效形式，应该尽量避免。产生弹性滑动的原因有两个:一是皮带本身具有弹性;二是皮带驱动时，大受力边和小受力边存在受力差。弹性滑动会引发传动比不准确、传动效率低、带温升高、加速带磨损等一系列不好的影响。
一般情况下，在正常传输条件下(滑动角<包角)，带的弹性滑动也不一定都发生在包角的接触弧上，这种情况只发生在主动轮和从动轮离开的接触弧部分之前。
当带传动不过载时，滑动角为零。随着载荷的增加，滑动角也会变大，当滑移角与包角相等时，带开始打滑。打滑会严重破坏皮带，使皮带的运动状态紊乱。对于开式传动，大轮上皮带的角度总是大于小轮上皮带的角度，所以打滑总会从小轮上开始。
3.3 输送设备的选择
物料输送设备可分为机械输送设备和气流输送设备，而机械输送设备又可分为带式运输机、斗式运输机和螺旋式运输机三种，其中气流输送还可分为吸引式输送与压送式输送。
在实际生产实践中，不同状态的物料有不同的输送方式和机械，固体物料一般采用机械输送设备，液体物料采用泵输送。从输送方向看，有垂直向上输送或斜向上输送，有水平距离或微小坡度(倾角)的上升和下降的运送，有垂直向下或倾斜向下的放送。从运送方式上有被送物料的平移向前运动，也有被送物料呈翻滚前进的运动，也有的是被送物料呈无规则的运行。
在考虑生产工艺过程时，应当把工作机构和输送、预处理系统的设备密切结合起来。
其中，带式运输机可以用来输送散粒状物品、块状物品及成品制件。按结构不同,带式运输机可分为固定式、运动式、搬移式三类。固定式的带式运输机的应用最为广泛。
所以，我选择用带式运输机作为本次设计的输送设备。
3.4 带式输送机的基本构造
带式输送机的主要部件有输送带、托辊、滚筒、传动装置和张紧装置，以及加料装置和卸料装置。
它的主要构造是一条环形带,绕在相距一定距离的两个滚轮上，一个滚轮是起动轮，另一个是从动轮。起动轮由传动装置带动旋转,继而带动带运动，放在带上的物料就沿着带的运动方向被运输。从动轮的作用是支承运输带，托滚固定在运输机的机座上，还有紧张装置。物品在带式运输机上的运动方向可以是水平的,也可以是倾斜的,然而，倾斜角度受材料和带材的物理性质、它们之间的摩擦和材料的自然滑移的限制，一般小于22度。
3.5 带式输送机的主要部件
3.5.1带
输送带是带式输送机上的重要零部件，输送带的价值占整个输送机价值的30%-50%。输送带在运行过程中会受到各式各样的力，不仅要受到纵向拉应力，还要受到通过滚筒和托辊的弯曲应力。大多数输送带经过大件尖锐物料磕碰，会因表面和边缘磨损、击穿、撕裂、剥离等而损坏。输送带的合理选择对输送机的设计至关重要。作为运输机的带必须满足下面几个基本要求:强度高,本身质量轻，相对伸长小弹性高柔软，耐磨,耐用。
输送带是根据从哪儿运输到哪儿，运输什么东西，在什么情况背景环境下运输而定的。选择一条合适的输送带不仅对输送机完成生产至关重要，而且会直接影响到输送机滚筒、托辊、驱动装置等机械部件的设计。
1.输送带的结构与种类
普通输送带包括三个组成部分：
覆盖层—上覆盖层和下覆盖层;
带芯(骨架)—单层和多层;
隔离层—带芯的粘接介质。
输送带带芯的正反面都会覆上一层保护层，正面也就是接触运输物料的面为承载面，反面则是直接接触滚筒与托辊的面。一般情况下，正面接触物料的面会比反面的保护层要厚。输送带的正面保护层需要直接受到物料的冲击和摩擦，反面则只是受到滚筒和托辊的摩擦。如若反面保护层过厚，则会增加输送机的运行阻力。
皮带芯提供必要的力量来驱动皮带和支撑皮带所携带的物料。皮带的强度是由皮带芯的强度决定的。
隔离层是指皮带芯每层与每层之间的位置，它的基本作用就是把皮带芯里的各层分开来，防止各层之间发生摩擦，使输送发生的挠曲。同时，它可以提供不错的粘合性能，将带芯粘在一起，以使带芯能够受的住更大的力，并能禁受住在受料处受到的冲击，并最终实现所需的性能，如耐热、耐油或阻燃等。
输送带大概分一下可列为俩大类，一种是普通输送带，一种是特殊结构输送带。再细化的可分为以下种类：
（1）Ⅰ类输送带:Ⅰ类输送带的保护层用天然橡胶、合成橡胶、合成橡胶与天然橡胶的混合物，或各种合成橡胶的混合物。选择橡胶和橡胶混合物做保护层，以提供最佳的耐切割，腐蚀和耐磨性。它有隔离层，可保证输送带不打弯，以及长时间的安全使用。
（2）Ⅱ类输送带:Ⅱ类输送带具有禁磨的保护层,但是抗剪切、抗腐蚀性和挠曲寿命不如Ⅰ类输送带。
（3）耐热输送带:选用合成橡胶或合成橡胶混合物作为保护层的耐热输送带，其具有最优良的耐高温性能，同时，它对所运输的物料具有足够的耐磨和耐腐蚀性。如果你对输送带有耐热性和耐油性的的需求，那你必须使用特殊的合成橡胶混合物。当你要运输的物料温度高于110℃时，你就应该考虑覆盖有可以承受300℃~350℃的保护层的运输带了。
（4）阻燃输送带：阻燃输送带是按照矿山安全规程制造的。在有耐油，耐高温等特殊要求的情况下选择运输带时，你就需要给运输带覆上特殊的阻燃覆盖胶混合料。
（5）食品输送带:食品输送装置必须接触植物油和动物油。在这种环境下，以PVC和亚硝酸盐为主的输送带结构占主导地位。在这些条件下，两种输送带都具有良好的抗膨胀和降解性能。
（6）耐低温输送带:正常情况下，大多数通用型(I类和II类)输送带和化合物在-40℃时耐硬化。但对于大多数通用输送带来说，在寒冷条件下，如果输送带长时间保持在-40℃的环境中，会被冻住，从而变硬。此时如果开动机器，对带的损伤是很大的。如果输送机要在这种环境下工作时，带子应配备适当的低温软化剂和低玻璃转化聚合物或混合物，从而使它足够柔软，而保证安全性。
（7）耐化学腐蚀输送带：在系统运行于特殊化学环境时应咨询生产厂家。应明确规定输送带工作的条件。还要考虑化学品的浓度和温度，以及化学品或油的意外运输的可能性。
2.普通输送带
一般带式输送机输送带的主要结构形式是由多层布组成，层与层之间用橡胶粘合，用橡胶保护层保护上下层。织物可以是棉、维纶、尼龙等纤维编织或混纺而成。一般布带宽度为300~2200mm，布带层数为3~12层，上层的覆盖层厚度3.0~6.0mm，下层的覆盖层厚度1.4~4.5mm。
运送不同的物料需要选择不同的保护层，整芯输送带的芯是整体编织而成，它的编制材料大多是化纤。它的优点是比较薄，有弹性，禁得住物料碰撞能好，比较柔软，并且，由于是整体编成的，没有分层，在受到大弯曲时不会产生层间开裂现象。织物输送带一般用于小型带式输送机，当输送带芯的层数过多时，它的性能就会变差。它的横向强度一般比钢丝绳芯输送带大， 因而，当输送物料可能冲击输送带造成输送带击穿和撕裂时，一般应优先采用织物带。
3.特殊结构输送带
特殊结构输送带大致分为以下几大类：
（1）钢绳牵引输送带，输送带在运输过程中起承载物料和人员的作用，牵引是由另一套钢丝绳提供的。钢绳牵引输送带特别适用于长距离输送机并可以运送人员。
（2）旅客输送带：输送带设计成在边辊上支撑的形式，当边辊带来某些不舒适时，应该采用托辊支撑。
（3）花纹输送带:在输送带表面刻上花纹可以实现比普通输送带较大倾角的输送,。花纹可以做成各种形式
（4）波状挡边输送带：当进一步增大倾角时，可采用波状挡边输送带，输送带由基带、波状挡边、中间挡板组成。
（5）防撕裂输送带：在输送带的横向增加横向加强材料，以增加横向的抗破坏能力，起到防撕裂的作用。
4.输送带的形态与结构
输送带的输送能力会影响到输送方式的选择，同时输送方式还取决于使用的地方和使用的环境的限制，这些都是决定输送带的选材、结构、多长以及安全系数的前提。运输方式有很多种，如平形、槽形、大倾角、弯曲和转弯输送,箱形、管形、封闭式输送,升降运输等。
你的输送带的带芯的结构和层数与你选择什么样的芯材有很大的关系。
棉帆布多层输送带强度低、层数多、不禁用、好发霉、自重大、消耗能源多等特点。
尼龙输送带具有强度高、有弹性、重量轻、良好的耐冲击和抗弯强度,可轻易弯曲成槽,不易发霉，不浸水，他比棉帆布输送带更好,但他的主要缺点是伸长量打,当两传动轮足够远的，能够满足它的伸长量的时候，可优先选择尼龙带。
涤纶芯的性能与棉纤维相似，它具有尼龙带芯的全部优点。其弹性模量比尼龙高，伸长量不那么大，尺寸经张紧后也不会产生大的变化，是理想的输送带。
现在的输送带芯的层数越来越趋于向少层数发展，层数少的优点是:
(1)少量的层数可以减少层间应力分布的不平衡，提高强度利用率，提高性价比。
(2)脱层现象会减少，提高抗疲劳性能，延长使用寿命。
(3)提高纵向挠度，可减小滚筒直径。
(4)可减小接头总长度，提高接头效率。
整型带芯输送带是输送带的发展方向，由于整型编织的带芯，其强度和延伸率可以保持一致，使受力平衡，接头利用率更高。
3.5.2托辊
托辊是带式输送机上较为重要的零件。托辊是用来托着物体运行的，以减小在输送物料过程中受到的阻力，因为输送带都是柔性材料，运输物料时不可避免地会被物体重量压得下垂，托辊就是为了避免这一现象的，以此来保证输送机的正常工作。托辊一般都是成组安装在输送机上的。上托辊有两种形式，一种是单个的平行托辊，还有一种可以由两三个托辊配合而成一个凹形托辊组。这种托辊组的下面的托辊是水平的，两边的托辊一般成35°或45°的角。根据本次设计的要求，我会选择单个的平行托辊来装配输送机。托辊组因相异的使用方向可分为普通和专用两大类。专用托辊的作用是输送带的过渡导向，防止输送带跑偏和缓冲。由于设计要求不太复杂，仅使用普通托辊。
托辊的使用量是很大的，整个运输机，可能除了螺母以外，就托辊的数量最多了。它大概能占到整个运输机重量的三四成，所以托辊选的好不好直接关系到输送机的使用寿命和造价。
怎么选择托辊要从托辊的结构和你输送机上托辊的放置位置来综合考量。带式输送机不断地革新，托辊的结构种类也都日新月异。在这么多的托辊种类里如何挑选出最适合自己的一套是很有讲究的。托辊组最基本的要求是:使用可靠、低旋转阻力系数、低制造成本、有足够的承载能力。
普通托辊的结构如图3-3所示。它由管体、轴承座、轴承、轴和密封件组成。轴承安在在托辊里面，托辊轴的两端由托辊支架支撑。
管体一般由无缝钢管或焊接钢管制成。由于钢管薄厚有差异，无缝钢管做成的托辊在运行时不太稳定，会引起输送带振动，导致轴承和密封件过早的损坏，而托辊密封的好不好可以直接决定托辊安全使用的时间，所以在运行速度较低的机器上使用。焊接钢管则不同，它的钢管薄厚基本一致，所以运行起来较为稳定，一般在运行速度高的输送机上使用。
一般来说，托辊组使用滚珠轴承。近年来，人们首选大间隙轴承来改善轴承的工作条件，从而降低托辊组的阻力和托辊组的制造成本。
图3-3 托辊轴承图
托辊作用大，数量多，所以它的合理分布对于机器的稳定运行意义重大。由于带式输送机很长带上承载物料较重，所以必须在胶带下面安装托辊以限制胶带下垂。托辊分上托辊和下托辊,上托辊有直形和槽形两种而下托辊只有直形一种，见图3-4。带宽和所运送的物料决定了托辊的间距。对于松散物料间距可取1~1.5m;当物品为大于20Kg的成件物品时,间距应不大于物品在运送方向上的长度的1/2,以保证物品至少支撑在两个托辊上。
图3-4 托辊分布图
3.5.3滚筒
带式输送机两端的滚轮称为滚筒。卸料端的滚轮通常是主传动轮。当轮转动时，通过摩擦作用带动皮带移动。送料端的滚筒是一个从动轮，其作用是收紧皮带和改变带的转向。滚筒的宽度应比皮带的宽度大100~120mm一般为生铁铸造或由钢板焊接而成空心轮。
1.滚筒的结构与种类：滚筒组是带式输送机的重要组成部分。根据滚筒在输送机中的作用，可分为两类:传动滚筒和改向滚筒。传动滚筒的作用是将驱动装置提供的扭矩传递给输送带。改向滚筒包括在输送机端部用于输送带的改向的滚筒、增加传动滚筒包角的导向滚筒、拉紧滚筒和用于拉紧装置的导向滚筒。滚筒组由滚筒轴、轴承座、轮毂、辐条、简易壳体等部件组成。有些滚筒会在表面覆上一层非金属物质，以增加和输送带之间的摩擦，带式输送机滚筒有很多种类型，主要有如下几种分类:
2.驱动方式：按驱动方式来分分为内驱动式和外驱动式。外驱动式，顾名思义，就是把驱动装置放在滚筒外面，减速器直接和滚筒输入轴相连。内驱动式，则是把驱动装置全部放在滚筒内，这就是我们常说的电动滚筒。
3.轴承内孔大小和载荷：按轴承孔径大小来分大致分为轻，中，重型三种，其中轻型孔径在50~100mm，中型孔径在120~180mm，重型:孔径在200~220mm。重型滚筒结构为轮毂与轴连接，采用环锁、辐条与壳体铸造焊接。这种结构的滚筒是将壳体的一部分、辐条、轮毂形成的底盘与壳体的另一部分焊接而成。还有一种较为特殊的工程级滚筒，这种滚筒是指为满足特种输送滚筒的承载条件而专门设计的滚筒。与普通滚筒相比，这些滚筒具有强度高、伸长率低的特点，其标准要高得多。因为其输送带拉紧受力极大，所以滚筒的同心度、滚筒的结构支撑和输送筒的同心度要精确对准，防止负荷集中和机器的精确对准是非常重要的。应强调的是，滚筒的结构支撑必须正确对中，防止载荷集中和因不对中而使滚筒过载。
4.工作功能：按工作功能来讲，主要使用的是包胶滚筒或者包陶瓷滚筒，滚筒保护面由许多陶瓷件套成，一方面可以增加摩擦，另一方面便于清洗。陶瓷片也可制成嵌板式，便于更换。
5.滚筒包胶：滚筒包胶的目的主要是为了增大摩擦，具体做法就是在光滑的钢滚筒表面涂上一层冷胶或硫化橡胶。包胶滚筒按其表面形状可分为:光面包胶滚筒、和菱形(网纹)包胶滚筒。还有一种广泛使用的人形包胶滚筒，因其条纹形状特殊，所以它能使表面水薄膜中断,从而达到不积水的效果，所以他它即使在雨天环境下使用摩擦力也不会大打折扣。同时，当输送带与滚筒接触时，可将输送带的表面挤进凹槽内，更是增大了摩擦。所以，人形滚筒是较为合适的选择。
3.5.4传动装置和张紧装置
传动装置主要包括电动机和减速机般安装于主动鼓轮一边。有两种结构形式:一种是外驱动式，一种是内驱动式,其中内驱动式又称为电动滚筒。电动滚筒适用于大功率带式运输机。因为本次设计所需功率较大,所以采用电动滚筒。
张紧装置的作用是给皮带一定的拉力,防止皮带在传动轮上打滑。常用的张紧装置有重锤式和螺丝拉紧式两种,安装于从动轮一侧。螺丝拉紧式是人工拧动螺丝来调整从动轮的前后位置使皮带具有一定的张力。此结构简单易操作。
3.5.5加料装置和卸料装置
由于本次的方案设计并没有涉及到加料装置和卸料装置，所以在此便不做赘述。
所以综合考量，我决定使用带式运输机作为码垛机的输送系统。
3.6  输送机零部件规格
1.规格
（1） 轴承：L90507内径尺寸为35mm，外圈不固定，内圈固定在张紧托架上，以支撑滚筒并保证它能够顺滑的旋转。
（2） 底座:底座上装有一个可调螺栓，控制输送机的的高度，并且对整机起支撑作用，本输送机共有6个底座，装配时需要把他们调成同一高度，以保证机器运行平稳安全。
（3）张紧托架:张紧托架是固定滚筒的位置，同时可以用它把传送带粗调试至合适的松紧程度，然后用四个螺栓把它拧紧。
（4）锁紧螺栓:用来限定张紧托架的位置，把它顶紧，不让它移动。
（5）轴承:外圈固定，内圈可旋转。用来把外动力传递给输送机的皮带，它外接于电动滚筒，内接于滚动圆筒。
（6）滚动支架:对滚筒起支撑作用，与侧梁焊接在一起。
（7）电动滚筒:通过皮带，把动力从电动机上传递给输送带，起到产生并传递动力的作用，是动力的来源。
（8）张紧滚筒:工作时，输送带的松紧程度由张紧滚筒来调整，相当于一个微调，而张紧托架相当于一个粗调。两者都是为了让输送带能正常工作，不打滑，不跑偏。
（9）输送带:起传递动力，又传递物料，带形状为扁平长方形。带宽600mm，带厚为400mm，带长度为6380mm。
（10）滚筒:起支撑和回转作用，它和输送带构成了最基本的传动链。
（11）侧梁:它分为左、右两侧梁，安装各种零部件相当于机壳。
2.选材
（1）轴承
选用锡基巴氏合金，它是一种性能最好的轴承合金。它的摩擦系数最小，抗咬合性、耐热性和耐磨性都很好，是工业上广泛应用的一种重要轴承合金材料。
（2）输送带
选用无头维纶帘布橡胶带，此种材料韧性特好，强度好，易承载较重物料，摩擦系数大，易于传动力，不易断裂，内部组织排布均匀，受力均匀，不易产生局部破损和应力集中现象。
（3）张紧滚筒
选用45号钢，它具有良好的综合机械性能；有足够的淬透性，有良好的锻造、切削加工和热处理工艺性，在高温下塑性好，变形挠力小，不易产生热腹。
（4）侧梁、导正挡板
   选材：Q235
①它具有良好的综合机械性能，能够承受较大的载荷和减轻了结构重量，提高了构件的可靠性。并且它还具有较高的强度。
②有良好的耐蚀性，包括耐大气、海水和土壤的腐蚀能力。
③具有低的时效敏感性和冷脆倾向。
④还具有良好的工艺性，满足冷加工成形和焊接的需要。
3.结构设计
输送机总长为3020mm，侧梁高度为160mm，输送带至地面的距离为300mm。
支架总跨度为790mm。
因待输物料宽度大约为500~550mm之间，故选输送带宽度为b=600mm.。
为了防止物料在放置到输送带上时位置过偏，这可能会导致在运输过程中掉落损坏，所以在输送机靠近放料端的区域安装一个导正挡板，如下图3-5。
图3-5 挡板
导正挡板在物料传送机上起到导正物料传送方向的作用。
整机输送物料距离要求大约为9m,如果一味的增加机器的长度，各种参数如承载能力、强度、支承件的刚度、运载速率、电机耗电功率等，都很难维持在所要求的范围内，而该机器的特点就是可以简易的就拼接在一起使用。可以将三台同样的机器首尾相挨的排放在一起。两机器之间间隔控制到20mm左右，此距离间隔既能保证物料能在两分机之间传送，又能保证带互不相碰。
如此，既有利于位置的调动，又能满足工作要求，并且还便于各种零件的加工。
第4章  主要结构参数的确定
根据输送机的实际工作要求，输送机的工作参数设定如下：
输送带预紧力：
承受工作载荷：
输送带工作时速：
电动滚筒功率：
每台分机输送带上能保证同时承载3个物料，运输滚筒传动效率为：0.96。
4.1  输送带的设计
输送带的选择需要考虑多种因素，主要有输送机系统对输送带的相关要求；输送机的使用环境；输送物料的种类，形状，状态，是否是高温度的物体，是否是腐蚀性物体；设计要求的宽度，长度，拉紧力；对于受的材料的冲击和抗撕裂方面的性能要求；接头条件。
一条可以正常使用的运输带一定要有合适的弹性，如果塑性太强，在受到物料冲击时断裂的可能性会大大增加。还要能够禁得住一定的重压，具有足够的宽度，至少要比你运输的物品宽，否则运输风险会大大增加。皮带，顾名思义一定要是软的，能够缠绕在滚轮上，有些要求特殊的运输作业可能还需要皮带能够沿长边方向弯曲成槽。俗话讲，物极必反，虽然皮带需要一定的弹性，但是这个弹性也不能过大，否则物体一重压，带子就会失去平衡，而且这也会使张紧装置较难起到作用。覆盖在输送带表面的保护层需要替输送带承受来自物料的一部分的冲击。在输送机工作过程中，输送带的保护层能要能够与滚筒的覆胶产生足够大的摩擦。若是分层的带芯，其质量一定要有所保障，分层这种严重质量问题一定要避免。最后，它的材料必须能够连接成一个环。
对于有重要用的途输送带，必须对输送带的各种工作条件进行分析，提出最终的性能要求。
4.1.1输送带设计需考虑的问题
在设计或选择输送带时，一定要仔细分析计算以下各方面的数据，从而对输送带做出一个综合的评测，以选择出最合适一条：
(1)输送物料:一般应考虑物料的一般特性、密度和最大粒径;在特殊情况下，还应考虑是否存在油或化学品、热材料的最高温度、阻燃要求等。
(2)最大的承受力、输送能力、带宽、带速等。
(3)输送机的运输长度；输送机运输物料的高度差；输送机的倾角；输送机的滚筒直径（关系到输送带的弯曲角度）。
(4)输送机是用一个滚筒提供动力还是。若是由两个滚筒提供，那么电机在第一和第二传动滚筒上的总功率是如何进行分配的；输送带在传动滚筒上的缠绕角度；滚筒表面是有没有覆胶；胶面又是什么类型。
(5)物料的体积决定输送带的宽度，输送带的宽度决定滚筒宽度，也决定滚筒直径。
(6)拉紧装置需考虑拉紧装置的形式、位置以及拉紧行程。
(7)托辊形式、托辊直径、槽角;滚子间距，包括头和尾过渡段的长度。
(8)溜槽的数量以送料装置的形式;块体自由下落至输送带的高度;进料槽长度;对缓冲辊或缓冲架有无影响;进料与带之间的夹角。
(9)在寒冷气候下使用的预期最低工作温度。
(10)输送带采用的接头形式及清洗方法。
4.1.2输送带种类的选定
输送带按材质和用途可分为普通输送带、特殊结构输送带、耐热输送带、耐寒输送带、耐油、耐酸、耐碱等十几种类型，并且有各自的带宽和强度范围。
根据被输送物料和实际工作场合的具体转点，输送带类型选定为普通输送带。
带宽范围为；
扯断强度：。
温度范围：。
根据工作要求，选带宽,选得层数。
一般的运输有橡胶带和塑料带两种，塑料带不仅具有耐磨、耐酸、耐碱、耐油和耐腐蚀的优点，而且塑料带可以于国内立足，很有前途的发展。但塑料带需要工作温度不能太低，只适用于我国南方和井下巷道等。如此，在一年中多数日子处于寒冷气候的北方选用橡胶带比较合适。
上胶厚度：	
下胶厚度：
橡胶带每米重量：。
4.1.3 输送带的计算
1.输送带的强度计算
计算帘布层数：
（4-1）
式中 ──橡胶带最大静张力（N）
──胶带强度（N/cm·层）
     b──胶带宽度（cm）
     S──安全系数
由整机工作参数得：，, 层代入上式中：
因为                          
所以此胶带是绝对安全的。
2.确定接头长度
因输送机上的带传动为环形传动，因此两端点连接处肯定会有或长或短的接头。
出于待输送物料需要平整稳定的工作环境，为此，带的接头长度愈短愈好，采用维纶帘布橡胶带正好能解决此问题。
4.2托辊的设计
托辊组的选择主要考虑托辊组的承载能力和寿命。需要考虑的因素有:载荷的大小和特征、输送带的宽度和运行情况、使用条件、输送机的工作制度、被输送物料的性质、轴承寿命、维护制度等。
在输送机不同位置安装的托辊组有不同的形式。例如：缓冲托辊组，过渡托辊组，防跑偏自调心托辊。运输量比较大的时候普遍选择槽型托辊，输送量较小的时候一般会选用双托辊组或单个平型托辊。
综合考虑工作要求与经济适用性，单个的平行托辊更符合要求。
辊子长度的选择可以直接通过输送带的宽度、托辊组中的辊子数和辊子间的连接和布置方式确定。托辊的直径和托辊轴的直径以及轴承可根据托辊所受的载荷情况选择。托辊的直径、长度都已标准化，一般情况下，可以根据载荷情况，通过单个托辊承载能力表确定托辊中的轴承型号，通过带速限制条件确定托辊直径。
一般情况下应尽量选用大直径托辊。大直径轧辊的优点是降低了托辊组在运行过程中的阻力和托辊组的转速，从而减少了因托辊组制造质量造成的动载荷。
4.2.1 托辊的计算
1.托辊的载荷
带式输送机的托辊载荷可以通过不同的模型进行计算,而且各个托辊的受力状况也不尽相同,槽形托辊组中70%作用在中间的辊子上,两侧辊尽各受15%。CEMA所给出的托辊载荷输送带和物料计算方法考虑了托辊组安装的偏差。另一方面,缓冲托辊、直线段托辊组、过渡段和曲线段的托辊载荷需要采用各自的处理方法进行计算托辊的载荷。
单个辊子的载荷可表示为，承载托辊
（4-2）
回程托辊为
（4-3）
式中 ——托辊间距0.3；
 ——物料系数，对平行托辊组，对二辊托辊组，对等长三辊槽型托辊组；
—输送带系数，对平行托辊组，对二辊托辊组，对等长三辊槽型托辊组。
	
2.托辊的直径
因为托辊的钢管在加工时存在一定的误差，这会导致管体薄厚不均匀。托辊就会存在偏心，在高速转动时，会产生震动。特别是当托辊的振动频率等于输送带的固有振动频率时，就会发生共振，使输送机无法正常工作。
当带速一定时，托辊直径越小，转速越高，振动越强。为避免过度振动，德国Krupp公司建议托辊转速小于，日本石川岛播磨公司根据托辊椭圆的不同建议转速小于和。
因此，在满足许用托辊转速的条件下，托辊直径为
式中—托辊的直径；
—托辊允许的转速。
根据带宽，查表可得，托辊直径为，满足使用要求。
托辊的长度
因为带宽，托辊直径，且托辊需要略宽于输送带，因此查表可得托辊长。
4.托辊的间距
绝大部分带式输送机都有平行上托辊和平行下托辊。平行下托辊主要用于选输送机和成件品输送机，平行下托辊用于回程分支。本产品也不列外。与此同时，为了使输送带以合适的力箍紧滚筒并稳定的持续工作，我还设计添加了调心托辊。该托辊能防止胶带跑偏，但仅起一定作用，而不能绝对作用。调心托辊分为槽形调心托辊和平行调心托辊。
根据工作条件及要求，本次设计的机器中根据结构尺寸，安放9个平行上托辊，4个平行下托辊，以及4个调心托辊。每3个平行上托辊为一个平行上托辊组，共有三组。
因为该输送机总长，为使每组托辊在保证结构合理的前提下尽量的平均分布，以获得均衡的支撑力，所以经计算，每组托辊的间距定为，每组里的托辊两两间距定为，受料处的托辊间距一般为上托辊间距的，头尾部滚筒距第一组托辊的距离是托辊间距的倍。
4.2.2 托辊轴的计算
1、已知参数         
（1）被输送物料为聚氯乙烯，每个包装袋加物料重为，故轴承受的径向压力。
（2）输送带的速度 。
（3）电动滚筒主传动轴输入功率，电动滚筒功率传递系数。
2、选材
根据要求，此轴不仅要有强度、钢度，还要有一定的耐磨性、耐热性和耐腐蚀能力等，并且价格不能要求太高，故选用45号钢。
3、轴的结构设计
（1）轴的外形
此轴待装轴承及轴承挡圈，两外伸端固定在支架上，用来支撑回转零件，工作时支撑受弯矩而不传递扭矩，故选用心轴。
根据轴上零件定位和拆装要求，把此轴设计成阶梯轴。
设计出的心轴的外形结构如下图4-1所示：
1.支架   2.挡板   3.轴承
图4-1 心轴
（2）轴的直径
因和处装有轴承，型号为6203，由标准查出装深沟球轴承处的直径，考虑到轴承的定位和拆装方便，取安装挡圈处的直径为，同时外伸端轴径也试取虑到滚动轴承的轴向固定，取。
（3）轴的长度
由侧梁厚度，再加上的内延伸长度，故取①段轴长度为
由轴的对称性可得：
因为带宽，轴承6203的宽度。
又因为（为滚筒体长度）
所以取③段轴的长度为，
轴用挡圈17的宽度为。
由已知托辊参数可得下式：
所以                      
已知轴的长度，可定出各力作用点之间的距离，即力臂：
     
同理：                 
4.按弯曲和扭转复合强度校核轴径绘出轴的空间受力。
（1）求垂直面内的支点反力：
因为被输送的物料每包重25kg
所以                  
求垂直面内弯矩：
（4-4）
同理
（2）求水平面内的支点反力：
因为                    
(4-5)
其中P为带传递功率，为有效拉力
所以                    
所以                       
对轴进行受力分析：
求水平面内弯矩：
(4-6)
同理                   
（3）求合成弯矩
(4-7)
因为此轴为心轴
所以扭矩
所以此轴所受的当量弯矩等于所受的合成弯矩，并且弯矩图也相当。
（4）根据当量弯矩图可知，此轴的危险截面是安装轴承的B和C处，根据B处的当量弯矩求直径：
(4-8)
现轴所选材料为45号钢，并进行正火处理。其极限强度为：，与其对应的，，故可求出：
所以                   
在结构设计中定出的，且，故强度足够。
所以此轴的结构参数设计均是合理的。
4.2.3 托辊尺寸参数总览
基础数据带宽，机器宽，托辊长，直径。各结构参数如下图4-2所示。
图4-2 托辊数据示意图
4.3滚筒的设计
带式运输机中对滚筒的选择主要数据就是滚筒的直径。相对而言，滚筒直径大一些对输送带是有利的。但是，当滚筒直径增大时，传动滚筒的质量、传动装置减速器的减速比、减速器的质量和尺寸都需要相应增大。滚筒直径的选择主要考虑以下因素。
(1)输送带绕过滚筒时输送带的弯曲应力。
(2)输送带发生弯曲的频次(与导绕方式、绕过滚筒的数目、运距和速度有关)。
(3)输送带与滚筒面间的最大或平均比压。
(4)输送带许用强度利用率(简称为RMBT,它是输送带最大张力与输送带许用张力之比的百分数)。
(5)输送机的安装地点和使用条件(例如:地面、井下、露天、移动、固定等)。
(6)包胶和包胶的变形量。
根据工作要求，选人字形包胶滚筒较为合适。
4.3.1滚筒的计算
根据带宽。
滚筒体直径：。
传动滚筒直径与帘布层数之比为满足要求，滚筒体长度为：。
滚筒体外表面在挂胶之前，需要车出深，螺距为的三角形螺纹，一半为左旋，一半为右旋。如此，才能与胶层结合牢固。
等滚筒体外表面加工完后，在其外圆表面挂丁月青橡胶，此种胶的胶层结合比较牢固，根据工作要求，硬度为邵尔A85。为此，需喷胶厚度为。
在装配图中，滚筒体标号为：SD0224-00。
1.根据具体工作要求可得，
滚筒直径：，滚筒功率：，由带宽可得。
2.电动滚筒结构设计
结构如图4-3所示。
1.电机 2.联轴器或耦合器 3.小透盖 4.左支座 5.左轴承座 
6.左法兰轴 7.滚筒体 8.减速器 9.右端盖 10.右轴承座 11.右支座
图4-3 电动滚筒结构图
3.各零件参数的设计
（1）主传动轴的设计：
由要求得已知参数：,  ；
张紧皮带轮时轴上所受的力；
电动滚筒所受的径向力；
输送带的速度：。
(2)根据已知参数，估算轴的直径：
 由，滚筒直径，求轴的转速：
因为                  
(4-9)
(4-10)
所以                 
选取轴的材料为45号钢，因为此种钢不管在强度、钢度、切削性、价格等方面，都很符合本次设计要求。
取A=138(A为材料许用剪应力系数)
按式                      
(4-11)
则                    
(3)轴的结构设计
①轴的外形
此轴待装皮带轮、轴承和轴端盖板，并且用来传递动力，它工作时不仅承受弯矩，并且还承受扭矩，随回转零件一起转动。因此，把它设计成转轴。
又根据轴上零件的定位和装拆要求，把此轴设定为阶梯轴。
设计的轴的外形结构如图4-4。
图4-4 轴
②轴的直径
上面估算出的直径应为轴外伸端和的直径，因要求，，且处和处均安装轴承，处均为配合尺寸，应取为标准直径，并且考虑到折装和定位，取值时，使。
故取, 。
因为轴处装有轴端盖板，查设计手册，取，考虑到轴端盖板的定位和安装，取。
③轴的长度
    由带宽，取段③长度为，选轴端盖板宽度为，由支架总跨度为，可选
又因为，，
故
考虑到零件的拆装和定位要求，选，
因为轴承内径为,且承受较大的径向力和轴向负荷，初步设定轴承宽,皮带轮轮毂部分的长度，
则，
取该段轴的长度
已知轴的长度，可定出各力作用点之间的距离：
（4）按弯曲和扭转复合强度校核各段轴径绘出轴的空间受力简图4-5。
图4-5 空间受力图
①求垂直面的支点反力
因为输送带的预紧力
所以                      
求垂直面内弯矩
绘出垂直面内弯矩图4-6。
图4-6 弯矩图
②求水平面内的支点反力：
因为                        
(4-12)
其中P为带传递功率，为有效拉力，所以                       
   
     
所以                      
对轴进行受力分析：
绘出水平面内弯矩图4-7。
图4-7 水平面弯矩图
③求合成弯矩
绘出合成弯矩图4-8。
图4-8 合成弯矩图
④求扭矩
⑤求当量弯矩
一般可以认定轴所传递的扭矩是按脉动循环变化的。现今轴所选材料为45号钢，并进行正火处理。由表8-1（见参考资料第3本）查出其极限强度，并由表8-3中查出与其对应的，=95 N/故可求出
此时                  
 
绘出当量弯矩图4-9
图4-9 当量弯矩图
⑥根据当量弯矩图可知，此轴的危险截面是装轴端盖板的C处，根据C处的当量弯矩求直径：
在结构设计中定出的该处直径为：，故强度足够。
此轴的结构参数均是合理的。
4.3.2  轴承的选定
1.轴承类型的选定
工作要求：主要承受径向载荷，同时也承受不算太大的任一方向的轴向载荷。
根据工作条件，选用的单列向心球轴承。
工作参数：转速，径向载荷,轴向载荷，要求其寿命为，每天工作8小时。
2.选择轴承型号：
①计算当量载荷：
单列向心球轴承的值，多数均大于或者可说是全大于0.2，因此可设
所以
②查取和计算系数
载荷系数；
温度系数；
寿命系数。
速度系数可按下式计算：
(4-13)
③试选轴承型号
初步试选407轴承：
④计算额定动载荷的计算值：
	(4-14)
⑤选定轴承型号：
试选的407轴承，，故满足要求。
3.轴端盖板主参数的设定
由轴径宽， 
盖板厚度：，盖板外径选取为：。
轴端盖板起着支撑和传递动力的双重作用。
4.3.3胶层的设定
电动滚筒最外层的胶层是和输送带接触的，并且靠摩擦力带动输送带运动。
本次设计，胶层材料选用丁氰橡胶。因为它价格低廉，并且还满足各种工作要求。
为了与滚筒体配合，选取胶层厚度为，胶层长度为。
4.3.4滚筒体主参数总览
由带宽可得：
滚筒体直径为：；
滚筒体壁厚为： ；
滚筒体长度为：；
为了保证端部的轴端盖板在工作时不得有自由转动和窜动现象，两端应旋压封头，故滚筒体长度增加长度，所以滚筒体选定长度为。
结  论
本文对带式输送机的工作原理以及主要部件的选定和设计进行了详细阐述，介绍输送机主要零部件的多种种类，并做出了最优解同时解释了原因。此次设计完成了对带式输送的总体结构方案设计及主要零部件的选择，并绘制了带式输送机的装配图，同时对主要传动受力件进行了的校核计算，使其在结构，强度，外观等各方面完全达到使用要求。
本文所设计的带式输送机操作简单，结构合理，可运输物料种类宽泛，自动化程度高，各零件更换简易，造成本较低。
本产品的创新之处在于查阅了现下最常使用的各类输送设备后，结合所要求的工作特点，采百家之长，针对性的设计出了该款带式输送机。该机器可对输送带进行高度调整，以满足更复杂的生产需求，而且各部件尽可能地采用标准件以降低成本和减小后期维修难度。同时，该输送机组合简单，最大程度的适应复杂的工作环境。但由于对带式输送机的各种影响因素考虑不够全面，所以对结构的设计可能不是最优的，仍有不小改进空间。
参考文献
[1] 李柳、段运熊．带式输送机滚筒支架计算及仿真[J]. 上海：煤矿机械，2020．
[2] 赵晓霞．带式输送机压陷滚动阻力与模拟摩擦系数的研究[D]．太原科技大学，2019．
[3] 王鹏程．带式输送机参数化设计及其关键部件研究[D]．辽宁：工程技术大学，2019. 
[4] 马武、霍明明. 带式输送机传动滚筒参数化设计及稳定性研究[J]．煤矿机械，2018(09). 
[5] 徐德超. 新型矿用带式输送机托辊分析与研究[D]．大连交通大学，2019．
[6] 徐传洪. 带式输送机运行阻力分析与研究[D]．山东科技大学，2018． 
[7] 张新才. 矿用带式输送机托辊分布的布局优化方法研究[J]．煤矿机械，2018(09). 
[8] 徐立伟. 带传动摩擦系数测试方法及试验装置结构设计[D]．长春理工大学，2019.
[9] 江旗. 胶带输送机托辊密封结构机理及托辊强度分析[D]．华北理工大学，2019. 
[10] 栗春惠．带式输送机系统动力学分析及关键部件有限元分析[D]．太原科技大学，2020．
[11] 朱冰心．带式输送机滚筒结构设计及优化[D]．兰州交通大学，2019. 
[12] 张建平．带式输送机滚筒结构不同优化方案对比[J]．机械管理开发，2019(05)．
[13] 张华栋．陶瓷托辊芯轴自动装配技术研究[D]．河北工程大学，2020. 
[14] 韩亮亮．带式输送机主要阻力的研究[D]．太原科技大学，2019.
[15] 陈帅．耐烧蚀输送带覆盖层橡胶材料的制备与性能研究[D]．北京化工大学，2017.
[16] Nguyen Vanliem\Feng Dapeng\Hou Lang. Study on running deviation mechanism and intelligent control of belt conveyor [J]．School of Mechanical and Electrical Engineering\Hubei Polytechnic University\ Hubei Key Laboratory of Intelligent Conveying Technology and Device\Hubei Polytechnic University, 2021. 
[17] Bajda Mirosław; Hardygóra Monika．Analysis of Reasons for Reduced Strength of Multiply Conveyor Belt Splices [J]．Faculty of Geoengineering\Mining and Geology\Wroclaw University of Science and Technology\ Poland, 2021. 
[18] Brian D Sparks．Why You Should Consider Conveyor Belts[J]．ProQuest Journal, 2020.
致  谢
经过了近两个月的努力，我最终完成了我的论文写作。在整个的毕业作品的设计与论文的编撰中，老师给予了我莫大的帮助，老师对我的设计严格要求，对整体进程精准把握，对于我设计中出现的问题一一指正，正因如此，我才得以按质按量按时的完成了我的毕业设计。
从一开始的论文选题到论文的完成以及毕设作品整体展现，每一步对我来说都是新的尝试与挑战，这也是我在大学期间独立完成的最大的项目。在这段时间里，我学到了很多知识也有很多感受，从一无所知，到不断地查阅资料，梳理思维，确定方法，慢慢让自己头脑中模糊的概念逐渐清晰，使自己稚嫩作品一步步完善起来，每一次改善都是我不断学习的成果，每一次数据的得出都会让我兴奋好一段时间。我的毕业设计作品不是很成熟，还有很多不足之处。但是这次做毕业论文设计的经历使我终身受益。我感受到做设计是要真真正正用心去做的一件事情，是真正的自己学习的过程和研究的过程，没有学习就不可能有研究的潜力，没有自己的研究，就不会有所突破，那也就不叫毕业设计了。期望这次的经历能让我在以后学习中激励我继续前进。

    '''
    bot = ParseArticle(article)
    bot.cut()
    for index, item in enumerate(bot.contents):
        print(item)
        # if item['content'] != item['check_content']:
        #     print(bot.contents[index-1])
        #     print(item)
